/************************************************
 * Copyright (c) 2007 ~ 2009, 
 * All rights reserved.
 * Version   : 1.0
 * Author    : lengsh@gmail.com 
 * Date      : 2009.1.2
 ************************************************/

#ifndef _XDEBUG_H__
#define _XDEBUG_H__

#include <iostream>
#include <time.h>
#include <stdio.h>
#include <string>

using namespace std;

#define INFO   std::cout<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":" 
#define ERRO   std::cerr<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":" 
#define WARN   std::cerr<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":"

#ifdef _DEBUG
   #define DEBUG1(a)              cout<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":"<<a<<endl
   #define DEBUG2(a,b)            cout<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":"<<a<<b<<endl
   #define DEBUG3(a,b,c)          cout<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":"<<a<<b<<c<<endl
   #define DEBUG4(a,b,c,d)        cout<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":"<<a<<b<<c<<d<<endl
   #define DEBUG5(a,b,c,d,e)      cout<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":"<<a<<b<<c<<d<<e<<endl
   #define DEBUG6(a,b,c,d,e,f)    cout<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":"<<a<<b<<c<<d<<e<<f<<endl
   #define DEBUG7(a,b,c,d,e,f,g)  cout<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":"<<a<<b<<c<<d<<e<<f<<g<<endl
   #define DEBUG8(a,b,c,d,e,f,g,h) cout<<__FILE__<<":"<<__func__<<":"<<__LINE__<<":"<<a<<b<<c<<d<<e<<f<<g<<h<<endl
#else

   #define DEBUG1(a)             
   #define DEBUG2(a,b)             
   #define DEBUG3(a,b,c)             
   #define DEBUG4(a,b,c,d)             
   #define DEBUG5(a,b,c,d,e)             
   #define DEBUG6(a,b,c,d,e,f)             
   #define DEBUG7(a,b,c,d,e,f,g)             
   #define DEBUG8(a,b,c,d,e,f,g,h)             
#endif

#endif
